<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<title>DNМP - паспорт</title>
<link href="ice.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<p><b>Distributed Network Messaging Protocol</b></p>

<p>Коммерческое использование только с разрешения автора.<br>
При использовании необходимо явно указывать ссылку на источник.</p>

<p>Sergey Bodrov, 2009-12-09</p>

<p><b>Паспорт клиента</b> - набор данных о клиенте, нужен для хранения и передачи информации о клиенте между узлами.</p>

<p><b>Описание</b></p>

<p>Паспорт содержит всю необходимую информацию о клиенте, которая хранится на узле N1, у которому подключен клиент. Если клиент подключается на другой узел N2, то другой узел N2 запрашивает паспорт клиента у первоначального узла N1.</p>

<p>Для успешного запроса паспорта узел N2 должен сообщить узлу N1 правильный GUID клиента(его сообщает сам клиент при подключении к узлу). Паспорт передается между узлами в шифрованном виде, шифруется ключом клиента. Сначала запрашиваются и передаются обязательные поля. Если узел N2 смог расшифровать данные, то запрашивается паспорт целиком.</p>

<p>После переезда паспорта на новый узел, ключ клиента меняется.</p>

<p>Если узел не имеет паспорта клиента и не может запросить его у других узлов, то узел может создать новый паспорт для клиента.</p>

<p>Данные из паспорта (кроме ключа и сообщений) общедоступны и могут быть использованы для поиска клиента.</p>

<p><b>Состав паспорта</b></p>

<p>
<u>Обязательные поля</u><br>
<li>GUID - уникальный идентификационный номер клиента
<li>GUID узла, выдавшего паспорт
<li>Название
<li>Ключ (ключевой хеш) клиента
</p>

<p>
<u>Необязательные поля</u><br>
<li>Имя владельца
<li>Местонахождение
<li>Рейтинг
<li>Дата последнего доступа
<li>Любая дополнительная информация по ключевым словам - аватар, любимая песня, знак зодиака, модель компьютера, итд..
<li>Список адресов клиента
<li>Список контактов
<li>Список подписок на сервисы 
<li>Ожидающие приема сообщения
</p>

<p><b>Структура данных паспорта</b></p>

<p>Данные паспорта представлены в виде набора имя-значение. Значение может представлять собой вложенный набор значений.</p>

<p>Данные паспорта могут передаваться частями. Например, большой список контактов может быть разделен на части и передан как несколько небольших списков контактов.</p>

<p>Данные паспорта сериализуются в формат JSON, пакуются ZIP и шифруются RC4. Возможно использование других форматов сериализации, паковки и шифрования, если принимающий узел их поддерживает.</p>

<p>
<u>Формат сообщения:</u><br>
<a href="usrd.htm">Сервис USRD</a><br>
</p>

</body>
</html>